package com.itheima.controller;

import com.itheima.pojo.Emp;
import com.itheima.pojo.Result;
import com.itheima.util.XmlParserUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.function.Consumer;

/**
 * EmpController用于响应前端http请求,返回从xml中读取到的员工的数据
 */

//@Controller  /*表示该类被SpringMVC管理,可以接收http请求,返回响应数据*/
//@ResponseBody  /*表示要返回的是字符串,如果返回值类型是对象或者集合,会自动将对象和集合转成JSON字符串再返回*/

//此外还有@RequestBody  /*表示要请求体参数是JSON字符串*/

@RestController  /*@RestController注解 = @Controller注解 + @ResponseBody注解*/ public class EmpController {

    @RequestMapping("/listEmp1")
    public Result listEmp() {

//        Result result = new Result();
        try {
            //从xml中获取数据
//            List<Emp> empList = XmlParserUtils.parse("F:\\IntelijIDEA\\IntelliJ IDEA 2022.3\\IdeaProjects\\MyFirstProject\\learnSpringBoot\\target\\classes\\emp.xml", Emp.class);

            String file = this.getClass().getClassLoader().getResource("emp.xml").getFile().replaceAll("%20", " ");

//            Class clazz = this.getClass();//获取当前类EmpController的字节码文件对象,注意这个EmpController.class不在src下,而是在编译后生成的target中
//            ClassLoader classLoader = clazz.getClassLoader();//通过字节码文件对象获取类的加载器,这个加载器是从target中读数据,而不是从src中
//            URL resource = classLoader.getResource("emp.xml");//用类加载器获取emp.xml的类路径(这个类路径不是src/main/resources/emp.xml而是编译后生成的字节码文件所在的target/classes文件夹下的emp.xml)
//            String file = resource.getFile();//将URL类型的路径转成String类型


//            System.out.println("[" + file + "]");
            // [/F:/IntelijIDEA/IntelliJ%20IDEA%202022.3/IdeaProjects/MyFirstProject/learnSpringBoot/target/classes/emp.xml] 因为路径中有空格,被变成了%20,所以找不到文件emp.xml,通过加上.replaceAll("%20", " ")即可恢复路径不报错


            List<Emp> empList = XmlParserUtils.parse(file, Emp.class);
            empList.stream().forEach(new Consumer<Emp>() {
                @Override
                public void accept(Emp emp) {
                    String gender = emp.getGender(); //gender : 1 男 , 2 女
                    if ("1".equals(gender)) {
                        emp.setGender("男");
                    } else if ("2".equals(gender)) {
                        emp.setGender("女");
                    }
                    String job = emp.getJob(); //job : 1 讲师 , 2 班主任 , 3 就业指导
                    if ("1".equals(job)) {
                        emp.setJob("讲师");
                    } else if ("2".equals(job)) {
                        emp.setJob("班主任");
                    } else if ("3".equals(job)) {
                        emp.setJob("就业指导");
                    }
                }
            });


//            System.out.println(1 / 0);//{"code":0,"msg":"对不起，数据读取失败！！","data":null}

            //将数据放入result中
//            result.setCode(1);
//            result.setData(empList);
            return Result.success(empList);//{"code":1,"msg":"success","data":[{"name":"金毛狮王","age":55,"image":"https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/1.jpg","gender":"男","job":"讲师"},{"name":"白眉鹰王","age":65,"image":"https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/2.jpg","gender":"男","job":"讲师"},{"name":"青翼蝠王","age":45,"image":"https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/3.jpg","gender":"男","job":"班主任"},{"name":"紫衫龙王","age":38,"image":"https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/4.jpg","gender":"女","job":"就业指导"}]}
        } catch (Exception e) {
            e.printStackTrace();
//            result.setCode(0);
//            result.setMsg("对不起，数据读取失败！！");
            return Result.error("对不起，数据读取失败！！");
        }

//        return result;
    }
}
